#!/bin/bash

USERNAME="$1"

# 验证用户是否存在
if ! id -u "$USERNAME" >/dev/null 2>&1; then
    echo "❌ 用户 $USERNAME 不存在"
    exit 1
fi

# 生成符合复杂度要求的密码
generate_password() {
    # 定义可用字符集（排除易混淆字符）
    local upper="ABCDEFGHJKLMNPQRSTUVWXYZ"   # 移除I和O
    local lower="abcdefghijkmnpqrstuvwxyz"   # 移除l和o
    local digits="23456789"                  # 移除0和1
    local symbols="!@#$%^&*+?="

    # 从每个字符集各取1个保证基础复杂度
    local up_char=$(echo "$upper" | fold -w1 | shuf | head -n1)
    local low_char=$(echo "$lower" | fold -w1 | shuf | head -n1)
    local dig_char=$(echo "$digits" | fold -w1 | shuf | head -n1)
    local sym_char=$(echo "$symbols" | fold -w1 | shuf | head -n1)

    # 合并所有字符集生成剩余8位
    local all_chars="${upper}${lower}${digits}${symbols}"
    local remaining=$(head /dev/urandom | tr -dc "$all_chars" | fold -w8 | head -n1)

    # 合并并打乱顺序
    echo "${up_char}${low_char}${dig_char}${sym_char}${remaining}" | fold -w1 | shuf | tr -d '\n'
}

# 主程序
echo "🔒 正在为用户 $USERNAME 生成密码..."
PASSWORD=$(generate_password) || exit 1

if echo "$USERNAME:$PASSWORD" | chpasswd ; then
    echo "✅ 密码修改成功"
    echo "----------------------------------------"
    echo "用户名: $USERNAME"
    echo "新密码: ${PASSWORD}"  # 部分隐藏输出
    echo "----------------------------------------"
    echo "⚠️ 请妥善保存密码，此信息之后将不再显示！"
else
    echo "❌ 密码修改失败"
    exit 1
fi

# 安全清理
unset PASSWORD
exit 0